<?php

class Application_Model_GerenciadorParticipantesBolao
{

    public function boloesPendentes($email, $inicio, $total)
    {
        $participantesBolaoMapper = new Application_Model_ParticipantesBolaoMapper();
        $bolaoMapper = new Application_Model_BolaoMapper();

        $boloesPendentes = $participantesBolaoMapper->buscar($email, $inicio, $total);

        $boloes = array();

        foreach ($boloesPendentes as $linha_bolao)
        {
            $boloes[] = $bolaoMapper->findBolao($linha_bolao->id_bolao);
        }

        return $boloes;
    }

    public function getTotalBoloesPendentes($email) {
        $participantesBolaoMapper = new Application_Model_ParticipantesBolaoMapper();
        return $participantesBolaoMapper->getTotalBoloesPendentes($email);
    }

    public function jogosPendentes($email, $inicio, $total)
    {
        $boloes = $this->boloesPendentes($email, $inicio, $total);

        $jogoMapper = new Application_Model_BolaoJogoMapper();

        $apostaMapper = new Application_Model_ApostaMapper();

        $resultado = array();

        if ($boloes != null) {

            foreach ($boloes as $bolao_atual) {
                $jogo = $jogoMapper->findBolao($bolao_atual->get_id(), $bolao_atual->get_id_jogo(), true);

                if ($jogo == null) {
                    continue;
                }

                $string_partida = $jogo->time_a . ' x ' . $jogo->time_b;

                $string_data = new Zend_Date($jogo->data);

                $string_data = $string_data->toString('dd/MM/YYYY HH:mm:ss');
                $string_apostas = $jogo->n_apostas;
                $resultado[] = array(
                        'id_bolao' => $jogo->id,
                        'partida' => $string_partida,
                        'data' => $string_data,
                        'apostas' => $string_apostas
                    );
            }
        }

        return $resultado;
    }

    public function jogosImportantes($inicio, $total)
    {
        $bolaoJogoMapper = new Application_Model_BolaoJogoMapper();
        $apostaMapper = new Application_Model_ApostaMapper();

        $boloesAdm = $bolaoJogoMapper->getBoloesAdmImportante($total, $inicio);
        $resultado = array();

        if ($boloesAdm != null) {
            
            $cont = 0;

            foreach ($boloesAdm as $jogo)
            {
                $string_partida = $jogo->time_a . ' x ' . $jogo->time_b;

                $string_data = new Zend_Date($jogo->data);

                $string_data = $string_data->toString('dd/MM/YYYY HH:mm:ss');
                $string_apostas = $jogo->n_apostas;
                $resultado[] = array(
                        'id_bolao' => $jogo->id,
                        'partida' => $string_partida,
                        'data' => $string_data,
                        'apostas' => $string_apostas
                );
            }
        }

        return $resultado;
    }

    public function getTotalJogosImportantes() {
        $bolaoJogoMapper = new Application_Model_BolaoJogoMapper();

        return $bolaoJogoMapper->getNumeroBoloesAdmImportante();
    }

    public function jogosMaisApostados($inicio, $total)
    {
        $bolaoJogoMapper = new Application_Model_BolaoJogoMapper();
        $apostaMapper = new Application_Model_ApostaMapper();

        $boloesAdm = $bolaoJogoMapper->getBoloesAdmMaisApostados($total, $inicio);
        $resultado = array();

        if ($boloesAdm != null) {

            $cont = 0;

            foreach ($boloesAdm as $jogo)
            {
                $string_partida = $jogo->time_a . ' x ' . $jogo->time_b;

                $string_data = new Zend_Date($jogo->data);

                $string_data = $string_data->toString('dd/MM/YYYY HH:mm:ss');
                $string_apostas = $jogo->n_apostas;
                $resultado[] = array(
                        'id_bolao' => $jogo->id,
                        'partida' => $string_partida,
                        'data' => $string_data,
                        'apostas' => $string_apostas
                );
            }
        }

        return $resultado;
    }

    public function getTotalJogosMaisApostados() {
        $bolaoJogoMapper = new Application_Model_BolaoJogoMapper();

        return $bolaoJogoMapper->getNumeroBoloesAdmMaisApostados();
    }

    public function jogosAdm($inicio, $total)
    {
        $bolaoJogoMapper = new Application_Model_BolaoJogoMapper();
        $apostaMapper = new Application_Model_ApostaMapper();

        $boloesAdm = $bolaoJogoMapper->getBoloesAdm($total, $inicio);
        $resultado = array();

        if ($boloesAdm != null) {

            $cont = 0;

            foreach ($boloesAdm as $jogo)
            {
                $string_partida = $jogo->time_a . ' x ' . $jogo->time_b;

                $string_data = new Zend_Date($jogo->data);

                $string_data = $string_data->toString('dd/MM/YYYY HH:mm:ss');
                $string_apostas = $jogo->n_apostas;
                $resultado[] = array(
                        'id_bolao' => $jogo->id,
                        'partida' => $string_partida,
                        'data' => $string_data,
                        'apostas' => $string_apostas,
                        'importante' => $jogo->importante,
                        'campeonato' => $jogo->nome_campeonato
                );
            }
        }

        return $resultado;
    }

    public function getTotalBoloes() {
        $bolaoJogoMapper = new Application_Model_BolaoJogoMapper();

        return $bolaoJogoMapper->getNumeroBoloesAdmMaisApostados();
    }

    public function bolitos($email) {
        $usuarioMapper = new Application_Model_UsuarioMapper();

        $usuario = new Application_Model_Usuario(null, null, null, null, null, null, null);

        $usu = $usuarioMapper->find($email, $usuario);

        return $usu->getBolitos()/100.0;
    }

    public function ranking($inicio, $total)
    {
        $usuario = new Application_Model_UsuarioMapper();
        $usuarios = $usuario->ranking($total, $inicio);

        $cont = 1;

        foreach ($usuarios as $linha)
        {
            $lista[] = array (
                0 => $linha->nome,
                1 => sprintf('%0.2f', $linha->bolitos/100.0),
                2 => $linha->email
            );

            $cont++;
        }

        return $lista;
    }

    public function getTotalUsuarios()
    {
        $usuario = new Application_Model_UsuarioMapper();
        $usuarios = $usuario->getTotalUsuarios();
        return count($usuarios);
    }

    public function getJogos($inicio, $total)
    {
        $jogoMapper = new Application_Model_JogoMapper();

        $boloesAdm = $jogoMapper->fetchAll($total, $inicio);
        $resultado = array();

        if ($boloesAdm != null) {

            $cont = 0;

            foreach ($boloesAdm as $jogo)
            {
                $string_partida = $jogo->time_a . ' x ' . $jogo->time_b;

                $string_data = new Zend_Date($jogo->data);

                $string_data = $string_data->toString('dd/MM/YYYY HH:mm:ss');
                $resultado[] = array(
                        'id_jogo' => $jogo->id,
                        'partida' => $string_partida,
                        'campeonato' => $jogo->nome_campeonato,
                        'data' => $string_data
                );
            }
        }

        return $resultado;
    }

    public function getTotalJogos()
    {
        $jogoMapper = new Application_Model_JogoMapper();

        $cont = $jogoMapper->getTotal();

        return $cont;
    }

    public function getJogosSemReultados($inicio, $total)
    {
        $jogoMapper = new Application_Model_JogoMapper();

        $boloesAdm = $jogoMapper->jogosSemResultados($total, $inicio);
        
        $resultado = array();

        if ($boloesAdm != null) {

            $cont = 0;

            foreach ($boloesAdm as $jogo)
            {
                $string_partida = $jogo->time_a . ' x ' . $jogo->time_b;

                $string_data = new Zend_Date($jogo->data);

                $string_data = $string_data->toString('dd/MM/YYYY HH:mm:ss');
                $resultado[] = array(
                        'id_jogo' => $jogo->id,
                        'partida' => $string_partida,
                        'campeonato' => $jogo->nome_campeonato,
                        'data' => $string_data
                );
            }
        }

        return $resultado;
    }

    public function getTotalJogosSemResultados()
    {
        $jogoMapper = new Application_Model_JogoMapper();

        $cont = $jogoMapper->getTotaljogosSemResultados();

        return $cont;
    }

    public function jogosPorCampeonato($campeonato, $inicio, $total){
        
        $bolaoJogoMapper = new Application_Model_BolaoJogoMapper();

        $boloesAdm = $bolaoJogoMapper->getBoloesCampeonato($campeonato, $total, $inicio);
        $resultado = array();

        if ($boloesAdm != null) {

            $cont = 0;

            foreach ($boloesAdm as $jogo)
            {
                $string_partida = $jogo->time_a . ' x ' . $jogo->time_b;

                $string_data = new Zend_Date($jogo->data);

                $string_data = $string_data->toString('dd/MM/YYYY HH:mm:ss');
                $string_apostas = $jogo->n_apostas;
                $resultado[] = array(
                        'id_bolao' => $jogo->id,
                        'partida' => $string_partida,
                        'data' => $string_data,
                        'apostas' => $string_apostas,
                        'campeonato' => $jogo->nome_campeonato,
                        'importante' => $jogo->importante
                );
            }
        }

        return $resultado;

    }

    public function getTotalBoloesCampeonato($capeonato) {
        $bolaoJogoMapper = new Application_Model_BolaoJogoMapper();

        $cont = $bolaoJogoMapper->getNumeroBoloesCampeonato($capeonato);

        return $cont;
    }


}